var $dlist_time;
var $api_url = "http://api.t.sina.com.cn/";

//载入JS-SDK
WB.core.load(['connect', 'client'], function() {
    var cfg = {
        key: $app_key,
        xdpath: 'http://'+location.host+'/xd.html'
    };
    WB.connect.init(cfg);	
    WB.client.init(cfg);
});



//用户登录
function login()
{
	WB.connect.login(function() {
		$("#login").hide();

		//查询接口限制
		$.getJSON($api_url+"account/rate_limit_status.json?callback=?", {source:$app_key}, function(o){
			if(!o || o.remaining_hits <=5)	//超出限制
			{
				var $reset_min = Math.ceil(parseInt(o.reset_time_in_seconds) / 60);
				alert("您访问的过于频繁，请在"+$reset_min+"分钟后再试。");
				$("#tips").html("您访问的过于频繁，请在"+$reset_min+"分钟后再试。").show();
			
				//退出登录
				WB.connect.logout(function(){});				
			}
			else							//取得用户信息
			{
				$.getJSON($api_url+"account/verify_credentials.json?callback=?", {source:$app_key}, function(o){
					$("#nick").html('<a target="_blank" href="http://t.sina.com.cn/'+o.id+'">'+o.screen_name+'</a>');
					$("#userinfo").fadeIn("normal", set_dlist_height);
				});
			}
			if(!$("#login_iframe").length)
			{
				$("body").append("<iframe id='login_iframe' src='logging.php' style='display:none'></iframe>")
			}
			
		});
	});
}

//用户退出
function logout()
{
	WB.connect.logout(function() {
		location.reload();
	});
}

//批量取消关注
function cancel_follow_all()
{
	if(!confirm("确实要批量取消关注吗?\n此操作不可恢复！"))
	{
		return false;
	}

	var $checkbox_cancel = $(":checkbox:checked[name=cancel]");
	//查询接口限制
	$.getJSON($api_url+"account/rate_limit_status.json?callback=?", {source:$app_key}, function(o)
	{
		if(!o)
		{
			alert("操作失败。\n请尝试点击昵称在用户的微博页面上取消关注。");
		}
		else if(o.remaining_hits == 0)	//超出限制
		{
			var $reset_min = Math.ceil(parseInt(o.reset_time_in_seconds) / 60);
			alert("您访问的过于频繁，请在"+$reset_min+"分钟后再试。\n或者点击昵称在用户的微博页面上取消关注。");
		}
		else if(o.remaining_hits < $checkbox_cancel.length)
		{
			if(!confirm("由于访问频率限制，您只能取消选中的前"+o.remaining_hits+"个用户，是否继续?"))
			{
				return false;
			}
		}
		else							//访问取消关注的数据接口
		{
			var $length = $checkbox_cancel.length;
			var $next_offset = 0;
				
			//批量取消关注核心方法
			function _cancel_follow_all()
			{
				var $obj = $checkbox_cancel.eq($next_offset);
				$next_offset++;
				
				if(!$obj.length || $next_offset >= o.remaining_hits)	return false;
				WB.client.parseCMD("/friendships/destroy.json", function(o, s){
					if(s)
					{
						$obj.parent().empty();
					}
					_cancel_follow_all();
				}, {user_id:$obj.attr("value")});	
				return true;
			}
			
			for(var $i=0; $i<5; $i++)
			{
				_cancel_follow_all();
			}
		}
	});
	return true;
}

//发表微博
function send_mblog($rate)
{
	var $msg="";
	if($rate <= 10)
	{
		$msg = "相当的杯具了……";
	}
	else if($rate <= 30)
	{
		$msg = "太杯具了……";
	}
	else if($rate <= 60)
	{
		$msg = "还好,还好……";
	}
	else if($rate <= 80)
	{
		$msg = "感觉不低。";
	}
	else if($rate <= 90)
	{
		$msg = "MS相当高了。";
	}
	else if($rate <= 99)
	{
		$msg = "人品爆发了！";
	}
	else if($rate)
	{
		$msg = "登峰造极了！";
	}


	$msg = "我通过 @互粉查询 计算出我的微博的互粉率是 "+$rate+"%，"+$msg+" 你也来看看你的互粉率吧！http://hufen.sinaapp.com";
	WB.client.parseCMD("/statuses/update.json", function(o, s) {	//开始发表
	}, {status:encodeURIComponent($msg)});


}

//设置最近访问的用户列表的高度
function set_dlist_height()
{
	$("#dlist_block").height($("#content").height());
}

//用户数据暂停
function dlist_pause()
{
    clearTimeout($dlist_time);
    $("#dlist").stop();
}

//使用户数据动起来
function dlist_animate()
{
    $("#dlist").animate({"top":-70}, {"duration":1000, "complete":function(){
        var $dl_first = $("#dlist > dl:first").remove();
        $("#dlist").append($dl_first).css("top", 0);
        $dlist_time = setTimeout(dlist_animate, 1000);
    }});
}


//完成操作
function finish()
{
    $("#unfolow_list > li:odd").addClass("odd");

    var $rate = 100-parseInt(parseInt($("#unfollow").html())/parseInt($("#total").html())*100);
    $("#follow_by_rate").html($rate+"%");

    if($rate == 100)
    {
        $("#unfolow_title").hide();
    }

    //发微博
    if($("#send_mblog").attr("checked"))
    {
        send_mblog($rate);
    }

    location.href="#result";
}


//开始计算
(function(){

var $total, $progress_total;
function compute(obj)
{
    location.href="#result";
	$(obj).parent().parent().hide(0, set_dlist_height);
	$.getJSON($api_url+"friends/ids.json?callback=?", {source:$app_key, count:"5000"}, function(o){
		$("#result").show();
		$progress_total = $total = o.ids.length;
		$("#total").html($total);
		$("#progress_total").html($total);

		//取得所有粉丝
		$.getJSON($api_url+"followers/ids.json?callback=?", {source:$app_key, count:"5000"}, function(fans){  
			if(fans.ids && fans.ids.length < 5000 && $total < 5000)    //可直接通过交集计算
			{
				var $fans={};
				$.each(fans.ids, function(k, v) {
					$fans[v] = true;
				});
				delete fans;

				var $no_follow = new Array;
				$.each(o.ids, function(k, v){
					//进度
					$progress = parseInt($("#progress").html())+1;
					$("#progress").html($progress);
					if($fans[v] !== true)   //未关注
					{
						$("#unfollow").html(parseInt($("#unfollow").html())+1);
						$no_follow.push(v);
					}
				});
				
				
				//使用多线程获取未关注人的方法
				var $length = $no_follow.length;
				var $next_offset = 0;
					
				//获取未关注的人核心方法
				function _get_no_follow()
				{
					var $uid = $no_follow[$next_offset];
					$next_offset++;
					
					if(!$uid)
					{
						if($("#unfolow_list").children().length == $("#unfollow").html())
						{
							$("#unfolow_list > li:odd").addClass("odd");
						}
						return false;
					}
					
					WB.client.parseCMD("/users/show.json", function(userinfo, s){
						if(s)
						{
							var $v = userinfo.verified ? 'class="verified"' : "";
							var $html = '<li><input type="checkbox" name="cancel" class="cancel" value="'+userinfo.id+'" /><a '+$v+' target="_blank" href="http://t.sina.com.cn/'+userinfo.id+'">'+userinfo.screen_name+'</a></li>';
							$("#unfolow_list").append($html)
						}
						_get_no_follow();
					}, {user_id:$uid});
					
					return true;
				}
				for(var $i=0; $i<10; $i++)	_get_no_follow();	//5线程
				
				
				//全部完成
				finish();
			}
			else    //一点一点计算
			{
				//取得接口访问限制次数
				$.getJSON($api_url+"account/rate_limit_status.json?callback=?", {source:$app_key}, function(olimit){
					var $limit = olimit.remaining_hits-1;
					if($limit == 0)
					{
						//退出登录
						WB.connect.logout(function(){
							var $reset_min = Math.ceil(parseInt(olimit.reset_time_in_seconds) / 60);
							$("#tips").html("您访问的过于频繁，请在"+$reset_min+"分钟后再试。").show();
						});
					}
					else if($limit < $total)
					{
						$("#tips").html("由于微博接口访问频率限制，只能查询您的前"+$limit+"个粉丝。").show();
						$progress_total = $limit;
						$("#progress_total").html($progress_total);
					}
					
					//使用多线程获取未关注人的方法
					var $next_offset = 0;
						
					//获取未关注的人核心方法
					function _get_no_follow_compare()
					{
						var $uid = o.ids[$next_offset];
						$next_offset++;
						
						if(!$uid)
						{
							if($progress == $progress_total)	//全部完成
							{
								finish();
								location.href="#result_finish";
							}
							return false;
						}
						
						//AJAX回调方法
						WB.client.parseCMD("/friendships/show.json", function(o, s){
							if(s) {
								//未关注的人
								if(!o.target.following)
								{
									$("#unfollow").html(parseInt($("#unfollow").html())+1);

									var $html = '<li><input type="checkbox" name="cancel" class="cancel" value="'+o.target.id+'" /><a target="_blank" href="http://t.sina.com.cn/'+o.target.id+'">'+o.target.screen_name+'</a></li>';
									$("#unfolow_list").append($html);
								}
							}
						
							//进度
							$progress = parseInt($("#progress").html())+1;
							$("#progress").html($progress);

							_get_no_follow_compare();
						}, {target_id:$uid});						
						return true;
					}
					for(var $i=0; $i<10; $i++)	_get_no_follow_compare();	//5线程
					
					
					
				});
			}
		});
	});
	
}

window.compute = compute;
})(window);

$(set_dlist_height);
$(window).load(function(){
	set_dlist_height();
	
	//读取算过的用户列表
	$data = $.parseJSON($("#dlist_data").html());
	$.each($data, function(k, v){
        if(!v.domain) v.domain = v.uid;

		var $html = "<dl>";
		$html += '<dt><a title="'+v.nick+'" target="_blank" href="http://t.sina.com.cn/'+v.domain+'"><img src="'+v.img+'" alt="'+v.nick+'" /></a></dt>';
		$html += '<dd class="nick"><a title="'+v.nick+'" target="_blank" href="http://t.sina.com.cn/'+v.domain+'">'+v.nick+'</a></dd>';
		$html += '<dd class="fans">粉丝:<a target="_blank" href="http://t.sina.com.cn/'+v.uid+'/fans">'+v.fans+'</a></dd>';
		$html += '<dd class="friends">关注:<a target="_blank" href="http://t.sina.com.cn/'+v.uid+'/follow">'+v.friends+'</a></dd>';
		$html += '<dd class="value">互粉率:<span>'+v.value+'%</span></dd>';
		$html += '<dd class="tips">'+v.tips+'</dd>';
		$html += "</dl>";
		
		$("#dlist").append($html).css("top", 0);
	});

    dlist_animate();
    $("#dlist_block").hover(dlist_pause, dlist_animate);
});
